package com.dousb.cloudlibrary.utils;

import com.dousb.cloudlibrary.common.ErrorCode;
import com.dousb.cloudlibrary.exception.BusinessException;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;

/**
 * 验证码工具类
 */
public class CaptchaUtils {

    @Resource
    private CacheUtil cacheUtil;

    /**
     * 校验验证码
     *
     * @param code
     * @param captchaKey
     * @param cacheUtil
     * @author 豆沙包
     * @date 2025/9/22 20:19
     */

    public static void validateCaptcha(String code, String captchaKey, CacheUtil cacheUtil) {
        // 校验参数
        if (!StringUtils.hasLength(code)) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR, "验证码为空");
        }
        if (!StringUtils.hasLength(captchaKey)) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR, "验证码Key为空");
        }

        // 从Redis获取验证码
        String kaptchaCode = cacheUtil.get(captchaKey);
        if (!StringUtils.hasLength(kaptchaCode)) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR, "验证码已失效，请重新获取");
        }

        // 校验验证码
        if (!code.toLowerCase().equals(kaptchaCode)) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR, "验证码错误");
        }

        // 验证通过后删除Redis中的验证码（防止重复使用）
        cacheUtil.remove(captchaKey);
    }
}
